package com.example.itext.绘制复杂表格;

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileOutputStream;
import java.io.IOException;

import static com.itextpdf.text.PageSize.A4;
import static com.itextpdf.text.Rectangle.*;

public class itext {

    public static void main(String[] args) throws IOException, DocumentException {

        // 分别设置左右上下的边距
        Document document = new Document(A4, 25, 25 , 25, 25);

        PdfWriter pdfWriter = PdfWriter.getInstance(document,new FileOutputStream("D:\\javaIdea\\IDEAPDF\\复杂表格.pdf"));

        document.open();

        BaseFont typeface = BaseFont.createFont("D:\\javaIdea\\itext\\src\\main\\resources\\static\\msyh.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
        Font font = new Font(typeface);

        // 先创建六列的表格
        PdfPTable table = new PdfPTable(6);
        // 设置每列的列宽
        table.setTotalWidth(new float[]{130, 100, 100, 100, 100, 100});
        // 设置居中
        table.setHorizontalAlignment(Element.ALIGN_CENTER);  //水平居中

        // 第一行
        table.addCell(getCell("户别",font));
        PdfPCell pdfPCell = new PdfPCell(new Paragraph("", font));
        pdfPCell.setMinimumHeight(30);
        pdfPCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        pdfPCell.setHorizontalAlignment(Element.ALIGN_CENTER);
        pdfPCell.setColspan(3);//SUPPRESS
        pdfPCell.setRowspan(2);//SUPPRESS
        table.addCell(pdfPCell);
        table.addCell(getCell("户主姓名",font));
        table.addCell(getCell("与户主关系",font));
        // 第二行
        table.addCell(getCell(""));
        table.addCell(getCell("张三",font));
        table.addCell(getCell(""));
        //第三行
        table.addCell(getCell("姓名",font));
        PdfPCell pdfPCell3 = new PdfPCell();
        pdfPCell3.setColspan(3);
        table.addCell(pdfPCell3);
        table.addCell(getCell("性别",font));
        table.addCell("");
        // 第四行
        table.addCell(getCell("曾用名",font));
        PdfPCell pdfPCell4 = new PdfPCell();
        pdfPCell4.setColspan(3);
        table.addCell(pdfPCell4);
        table.addCell(getCell("民族",font));
        table.addCell(getCell(""));
        // 第五行
        table.addCell(getCell("出生日期",font));
        PdfPCell pdfPCell5 = new PdfPCell();
        pdfPCell5.setColspan(5);
        table.addCell(pdfPCell5);
        // 第六行
        table.addCell(getCell("监护人",font));
        table.addCell(getCell(""));
        table.addCell(getCell(""));
        table.addCell(getCell("出生日期",font));
        PdfPCell pdfPCell6 = new PdfPCell();
        pdfPCell6.setColspan(2);
        table.addCell(pdfPCell6);
        // 第七行
        table.addCell(getCell("地址",font));
        PdfPCell pdfPCell7 = new PdfPCell();
        pdfPCell7.setColspan(5);
        table.addCell(pdfPCell7);
        // 第八行
        table.addCell(getCell( "本市（县）其他住址", font));
        pdfPCell6.setColspan(5);
        table.addCell(pdfPCell6);
        // 第九行
        table.addCell(getCell("籍贯",font));
        PdfPCell pdfPCell9 = new PdfPCell();
        pdfPCell9.setColspan(3);
        table.addCell(pdfPCell9);
        table.addCell(getCell("宗教信仰",font));
        table.addCell(getCell(""));
        // 第十行
        table.addCell(getCell("身份证编号",font));
        PdfPCell pdfPCell10 = new PdfPCell();
        pdfPCell10.setColspan(3);
        table.addCell(pdfPCell10);
        table.addCell(getCell("居民身份证签发日期",font));
        table.addCell(getCell(""));
        // 第十一行
        table.addCell(getCell("文化程度",font));
        table.addCell(getCell(""));
        table.addCell(getCell("婚姻状况",font));
        table.addCell(getCell(""));
        table.addCell(getCell("兵役状况",font));
        table.addCell(getCell(""));
        // 第十二行
        table.addCell(getCell("身高",font));
        table.addCell(getCell(""));
        table.addCell(getCell("血型",font));
        table.addCell(getCell(""));
        table.addCell(getCell("职业",font));
        table.addCell(getCell(""));
        // 第十三行
        table.addCell(getCell("服务处所",font));
        PdfPCell pdfPCell13 = new PdfPCell();
        pdfPCell13.setColspan(5);
        table.addCell(pdfPCell13);
        // 第十四行
        table.addCell(getCell("何时何因何地迁来本市（县）何时何因何地迁来本市（县）",font));
        PdfPCell pdfPCell14= new PdfPCell();
        pdfPCell14.setColspan(5);
        table.addCell(pdfPCell14);


        Paragraph end = new Paragraph("申报人签章");
        end.setAlignment(Paragraph.ALIGN_LEFT);

        Paragraph end2 = new Paragraph("申报人签章            加盖户口登记机关专用专用章", font);
        end2.setFirstLineIndent(90);//SUPPRESS

        Paragraph end3 = new Paragraph("承办人签章");
        end3.setAlignment(Paragraph.ALIGN_LEFT);

        Paragraph end4 = new Paragraph("承办人签章            登记日期：  年  月  日", font);
        end4.setFirstLineIndent(90);//SUPPRESS

        document.add(table);
        document.add(end);
        document.add(end2);
        document.add(end3);
        document.add(end4);

        document.close();
        pdfWriter.close();


    }

    public static PdfPCell getCell(String text)
    {
        Paragraph elements = new Paragraph(20,text);
        PdfPCell pdfPCell = new PdfPCell(elements);
        pdfPCell.setMinimumHeight(30);
        pdfPCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        pdfPCell.setHorizontalAlignment(Element.ALIGN_CENTER);
        return pdfPCell;

    }

    public static PdfPCell getCell(String text,Font font)
    {
        Paragraph elements = new Paragraph(text, font);
        PdfPCell pdfPCell = new PdfPCell(elements);
        pdfPCell.setBorder(RIGHT);
        pdfPCell.setMinimumHeight(50);
        pdfPCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        pdfPCell.setHorizontalAlignment(Element.ALIGN_CENTER);
        pdfPCell.setLeading(2,1);
        return pdfPCell;

    }

}
